<?php

namespace App\Http\Controllers\Test;


use App\Http\Controllers\Controller;
use Qiniu\Auth;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;


class OssController extends Controller
{

    // 对象储存上传文件测试
    // TODO 只测试了七牛云，华为云与腾讯云都没测试

    public function initialize()
    {
        parent::initialize();
    }

    // 华为云上传  TODO 未测试
    public function huawei()
    {
        //获取上传文件
        $file = $this->request->file('image');
        $url  = Filesystem::disk('huawei')->putFile('images', $file);

        if(!$url){
            new \exception('上传失败');
        }

        dd('上传成功,文件位置:'.$url);
    }

    // 腾讯云上传  TODO 未测试
    public function tencent()
    {
        //获取上传文件
        $file = $this->request->file('image');
        $url  = Filesystem::disk('tencent')->putFile('images', $file);

        if(!$url){
            new \exception('上传失败');
        }

        dd('上传成功,文件位置:'.$url);
    }

    // 搜索七牛云的图片
    public function searchQiniu()
    {
        $accessKey = config('filesystems.disks.qiniu.access_key');
        $secretKey = config('filesystems.disks.qiniu.secret_key');
        $auth      = new Auth($accessKey, $secretKey);
        $bucket    = config('filesystems.disks.qiniu.bucket');//上传空间名称

        $prefix = 'UPLOAD/2015/05/01/20150501070530.jpg'; // 要列取文件的公共前缀
        $prefix = 'UPLOAD/2019/05/06/5ccf98f68ba22.png'; // 要列取文件的公共前缀
        $prefix = 'UPLOAD/2013/03/23/20130323030312.jpg'; // 要列取文件的公共前缀
        $prefix = 'UPLOAD/2013/03/23/20130323030312.jpg_thumb.jpg'; // 要列取文件的公共前缀
        $marker = ''; // 上次列举返回的位置标记，作为本次列举的起点信息。
        $limit  = 100; // 本次列举的条目数，范围为 1-1000

        $bucketManager = new BucketManager($auth);
        $delimiter     = '';

        $res = $bucketManager->listFilesv2($bucket, $prefix, $marker, $limit, $delimiter, true);

        $err = $res[1];
        $ret = $res[0];  // $ret里面为文件每个文件的json信息，$ret是数组，json是字符串
        list($ret, $err) = $res;
        //var_dump($res);
        $this->throwIf(!empty($err), $err);

        // $ret 是数组，里面每个文件都是json

        return $this->success($ret);
    }

    // 七牛云 自身的上传（上传到根目录）
    public function qiniu()
    {
        $accessKey = config('filesystems.disks.qiniu.access_key');
        $secretKey = config('filesystems.disks.qiniu.secret_key');
        $auth      = new Auth($accessKey, $secretKey);
        $bucket    = config('filesystems.disks.qiniu.bucket');//上传空间名称

        //设置put policy的其他参数
        //$opts=['callbackUrl'=>'http://www.callback.com/','callbackBody'=>'name=$(fname)&hash=$(etag)','returnUrl'=>"http://www.baidu.com"];
        $token = $auth->uploadToken($bucket);//生成token

        $upload   = new UploadManager();
        $name     = $_FILES['file']['name'];  // 上传后的文件名与路径的组合
        $filePath = $_FILES['file']['tmp_name'];
        $type     = $_FILES['file']['type'];  // image/jpeg

        $res = $upload->putFile($token, 'app/'.$name, $filePath, null, $type, false);

        $err = $res[1];
        $ret = $res[0];  // $ret['hash'] 文件hash（同一个文件hash相同）
        list($ret, $err) = $res;
        var_dump($res);
        $this->throwIf(!empty($err), $err);

        // 上传成功
        // key就是上传的图片，带上域名就可以正常访问
        /*{
            "hash": "FloHIv9blcUP8Iur4eNhe-5GoVV7",
		    "key": "1Z93012500LS5-0-lp.jpg"
	    }*/

        return $this->success($ret);
    }


}



